home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / SLAX 6.0.8 / slax-6.0.8.iso / slax / base / 006-devel.lzm / usr / include / dns / xfrin.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-09-17  |  3.0 KB  |  112 lines

  1. /*
  2.  * Copyright (C) 2004-2006  Internet Systems Consortium, Inc. ("ISC")
  3.  * Copyright (C) 1999-2001, 2003  Internet Software Consortium.
  4.  *
  5.  * Permission to use, copy, modify, and distribute this software for any
  6.  * purpose with or without fee is hereby granted, provided that the above
  7.  * copyright notice and this permission notice appear in all copies.
  8.  *
  9.  * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
  10.  * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
  11.  * AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
  12.  * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
  13.  * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
  14.  * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  15.  * PERFORMANCE OF THIS SOFTWARE.
  16.  */
  17.  
  18. /* $Id: xfrin.h,v 1.20.18.5 2006/07/20 01:10:30 marka Exp $ */
  19.  
  20. #ifndef DNS_XFRIN_H
  21. #define DNS_XFRIN_H 1
  22.  
  23. /*****
  24.  ***** Module Info
  25.  *****/
  26.  
  27. /*! \file 
  28.  * \brief
  29.  * Incoming zone transfers (AXFR + IXFR).
  30.  */
  31.  
  32. /***
  33.  *** Imports
  34.  ***/
  35.  
  36. #include <isc/lang.h>
  37.  
  38. #include <dns/types.h>
  39.  
  40. /***
  41.  *** Types
  42.  ***/
  43.  
  44. /*%
  45.  * A transfer in progress.  This is an opaque type.
  46.  */
  47. typedef struct dns_xfrin_ctx dns_xfrin_ctx_t;
  48.  
  49. /***
  50.  *** Functions
  51.  ***/
  52.  
  53. ISC_LANG_BEGINDECLS
  54.  
  55. /*% see dns_xfrin_create2() */
  56. isc_result_t
  57. dns_xfrin_create(dns_zone_t *zone, dns_rdatatype_t xfrtype,
  58.          isc_sockaddr_t *masteraddr, dns_tsigkey_t *tsigkey,
  59.          isc_mem_t *mctx, isc_timermgr_t *timermgr,
  60.          isc_socketmgr_t *socketmgr, isc_task_t *task,
  61.          dns_xfrindone_t done, dns_xfrin_ctx_t **xfrp);
  62.  
  63. isc_result_t
  64. dns_xfrin_create2(dns_zone_t *zone, dns_rdatatype_t xfrtype,
  65.           isc_sockaddr_t *masteraddr, isc_sockaddr_t *sourceaddr,
  66.           dns_tsigkey_t *tsigkey, isc_mem_t *mctx,
  67.           isc_timermgr_t *timermgr, isc_socketmgr_t *socketmgr,
  68.           isc_task_t *task, dns_xfrindone_t done,
  69.           dns_xfrin_ctx_t **xfrp);
  70. /*%<
  71.  * Attempt to start an incoming zone transfer of 'zone'
  72.  * from 'masteraddr', creating a dns_xfrin_ctx_t object to
  73.  * manage it.  Attach '*xfrp' to the newly created object.
  74.  *
  75.  * Iff ISC_R_SUCCESS is returned, '*done' is guaranteed to be
  76.  * called in the context of 'task', with 'zone' and a result
  77.  * code as arguments when the transfer finishes.
  78.  *
  79.  * Requires:
  80.  *\li    'xfrtype' is dns_rdatatype_axfr, dns_rdatatype_ixfr
  81.  *    or dns_rdatatype_soa (soa query followed by axfr if
  82.  *    serial is greater than current serial).
  83.  *
  84.  *\li    If 'xfrtype' is dns_rdatatype_ixfr or dns_rdatatype_soa,
  85.  *    the zone has a database.
  86.  */
  87.  
  88. void
  89. dns_xfrin_shutdown(dns_xfrin_ctx_t *xfr);
  90. /*%<
  91.  * If the zone transfer 'xfr' has already finished,
  92.  * do nothing.  Otherwise, abort it and cause it to call
  93.  * its done callback with a status of ISC_R_CANCELLED.
  94.  */
  95.  
  96. void
  97. dns_xfrin_detach(dns_xfrin_ctx_t **xfrp);
  98. /*%<
  99.  * Detach a reference to a zone transfer object.
  100.  * Caller to maintain external locking if required.
  101.  */
  102.  
  103. void
  104. dns_xfrin_attach(dns_xfrin_ctx_t *source, dns_xfrin_ctx_t **target);
  105. /*%<
  106.  * Caller to maintain external locking if required.
  107.  */
  108.  
  109. ISC_LANG_ENDDECLS
  110.  
  111. #endif /* DNS_XFRIN_H */
  112.